#include <stdio.h>
#include <stdlib.h>
#include "interaction_T_P.h"
#include "personnage.h"
#include "gestion.h"
#include "terrain.h"
#include "IHM.h"
#include <SDL/SDL.h>


/*int Get_Direction(SDL_Event Event){
 
SDL_WaitEvent(&Event);
        switch(Event.type)
        {

            case SDL_KEYDOWN:
                switch(Event.key.keysym.sym)
                {
                    case SDLK_UP:
                        return 2;
                    case SDLK_DOWN:
			return 4;
                    case SDLK_RIGHT:
			return 3;
                    case SDLK_LEFT:
			return 1;
                }
            }

}*/


void Deplacer_Perso(_personnage* Perso,const int Direction,_terrain* Carte ){

Set_Posx(Perso, Get_Posx(Perso)-1);

if ( Get_Pm(Perso) > 0){

if (Direction == 1 ) {
	if ( Get_Posx(Perso)-1 >= 0 && Carte->Cases[Get_Posx(Perso)-1][Get_Posy(Perso)] == 0){
		Carte->Cases[Get_Posx(Perso)][Get_Posy(Perso)]=0;		
		Set_Posx(Perso, Get_Posx(Perso)-1);
		Carte->Cases[Get_Posx(Perso)][Get_Posy(Perso)]=Get_Id(Perso);
		Set_Pm(Perso,Get_Pm(Perso->Pm)-1);		
	}
}


if (Direction == 2 ) {
	if ( Perso->Posy-1 >= 0 && Carte->Cases[Perso->Posx][Perso->Posy+1] == 0){
		Carte->Cases[Get_Posx(Perso)][Get_Posy(Perso)]=0;		
		Set_Posy(Perso, Get_Posy(Perso)+1);
		Carte->Cases[Get_Posx(Perso)][Get_Posy(Perso)]=Get_Id(Perso);
		Set_Pm(Perso,Get_Pm(Perso->Pm)-1);		
	}
}

if (Direction == 3 ) {
	if ( Get_Posx(Perso)+1 <= Carte->Dimx && Carte->Cases[Get_Posx(Perso)+1][Perso->Posy] == 0){
		Carte->Cases[Get_Posx(Perso)][Get_Posy(Perso)]=0;		
		Set_Posx(Perso, Get_Posx(Perso)+1);
		Carte->Cases[Get_Posx(Perso)][Get_Posy(Perso)]=Get_Id(Perso);
		Set_Pm(Perso,Get_Pm(Perso->Pm)-1);		
	}
}

if (Direction == 4 ) {
	if ( Perso->Posy+1 <= Carte->Dimy && Carte->Cases[Perso->Posx][Perso->Posy-1] == 0){
		Carte->Cases[Get_Posx(Perso)][Get_Posy(Perso)]=0;		
		Set_Posy(Perso, Get_Posy(Perso)-1);
		Carte->Cases[Get_Posx(Perso)][Get_Posy(Perso)]=Get_Id(Perso);
		Set_Pm(Perso,Get_Pm(Perso->Pm)-1);
	}
}

}
  
} 

void Afficher_Perso_Deplacement(_personnage* Perso ,const int Direction,SDL_Surface*** Sprites, SDL_Surface* Ecran )
{
	int i,k,l;
	SDL_Rect PositionPerso;
	PositionPerso.x = Get_Posx(Perso)*45;
	PositionPerso.y = Get_Posy(Perso)*45; 
	if (Direction == 1 ) // gauche
	{
		l = 2
		k = (Get_Id(Perso)-2)/3;
		for(i=0; i <=45; i++)
		{
			PositionPerso.x--;
			SDL_BlitSurface(Sprites[k][l], NULL, Ecran, &PositionPerso);
			SDL_Flip(Ecran);
			SDL_Delay(2);
		}
	}

	if (Direction == 2 ) //haut
	{
		l = 3
		k = (Get_Id(Perso)-2)/3;
		for(i=0; i <=45; i++)
		{
			PositionPerso.y--;
			SDL_BlitSurface(Sprites[k][l], NULL, Ecran, &PositionPerso);
			SDL_Flip(Ecran);
			SDL_Delay(2);
		}
	}

	if (Direction == 3 ) //droite
	{
		l = 1
		for(i=0; i <=45; i++)
		{
			PositionPerso.x++;
			SDL_BlitSurface(Sprites[k][l], NULL, Ecran, &PositionPerso);
			SDL_Flip(Ecran);
			SDL_Delay(2);
		}
	}

	if (Direction == 4 ) //bas
	{
		for(i=0; i <=45; i++)
		{
			PositionPerso.y++;
			SDL_BlitSurface(Sprites[k][l], NULL, Ecran, &PositionPerso);
			SDL_Flip(Ecran);
			SDL_Delay(2);
		}
	}
}


/*void Placer_Perso_Terrain(_terrain* Terrain, _personnage** ListePerso, const int NbPersoTotal, SDL_Surface*** Sprites, SDL_Surface* ecran){
int i;
int xy[2];
SDL_Event Event;
i=0;



while(i<NbPersoTotal){
	SDL_WaitEvent(&Event);
	Convert_Clic_Case(Event, xy);	



	if ( Get_Case(Terrain,xy[0],xy[1]) == -(Get_Id(ListePerso[i])) ){
		Set_Posx(ListePerso[i], xy[0]);
		Set_Posy(ListePerso[i], xy[1]);
		Set_Case(Terrain,Get_Id(ListePerso[i]),xy[0], xy[1]);
		i++;
		Afficher_Perso(Sprites,ecran,xy,i); 
	}

}// fin while






}*/
